SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paChequearContinuidadesDeServicios]
-- <DESCRIPCION> Realiza el chequeo de continuidad de un servicio.
-- <CONSIDERACIONES ESPECIALES> 
-- <TABLAS> tb_ServiciosAgentes, tb_SubServiciosAgentes, tb_ColaDeMovimientos, tb_PlazasDeMovimiento

-- <ACTUALIZACIONES> 
-- 15/10/2008 - Publicado

@idCola INT,
@Estado INT OUTPUT,
@Diagnostico VARCHAR(1000) OUTPUT
AS
SET NOCOUNT ON
DECLARE @IdPlaza INT
DECLARE @IdAgente INT
DECLARE @Mes INT
DECLARE @Anio INT
DECLARE @FechaAlta DATETIME
DECLARE @Modo INT
DECLARE @IdServicioBase INT 
DECLARE @FechaContinuidad DATETIME

SET @Estado = 0
SET @Diagnostico = ''

--SELECT @Modo = Modo FROM tb_Usuarios WHERE NTUser = SYSTEM_USER

SELECT @IdAgente = Agente, @Mes = MONTH(Fecha1), @Anio = YEAR(Fecha1) , @FechaContinuidad =  Fecha1
	FROM tb_ColaDeMovimientos C WHERE C.IdCola = @IdCola



IF EXISTS (

	SELECT TOP 1 'PROBLEMA'
		FROM tb_ServiciosAgentes S
		INNER JOIN tb_PlazasDeMovimiento PM ON PM.IdServicioBase = S.idServicioAgente 
		WHERE PM.idCola = @IdCola
		
		  AND 
		     ( EXISTS (
						SELECT TOP 1 C.IdCola 
								FROM tb_ColaDeMovimientos C 
									INNER JOIN tb_PlazasDeMovimiento P ON C.IdCola = P.IdCola
								WHERE P.IdServicioBase = S.IdServicioAgente
									AND C.Movimiento = 10 AND MONTH(C.Fecha1) = @Mes 
									AND YEAR(C.Fecha1) = @Anio AND C.IdCola <> @IdCola	  
					  )	 	
	      OR 
	      	  (
	      		(YEAR(S.FechaAlta)  > @Anio) 
		   	 OR (MONTH(S.FechaAlta)  = @Mes AND YEAR(S.FechaAlta) = @Anio) 
		   	 OR (MONTH(S.FechaAlta)  > @Mes AND YEAR(S.FechaAlta) = @Anio)	  
		   	  )
		  OR  
		  	  (
				 (SELECT count(C.IdCola)
						FROM tb_ColaDeMovimientos C 
							INNER JOIN tb_PlazasDeMovimiento P ON C.IdCola = P.IdCola
						WHERE P.IdServicioBase = S.IdServicioAgente
							AND C.Movimiento = 10 
							 AND C.IdCola <> @IdCola)	  	  
		  	     < (abs(datediff(month, CASE WHEN  S.FechaAlta < '01/01/2008' THEN '01/01/2008' ELSE S.FechaAlta END , @FechaContinuidad)) - 1)   --- Se le puso lo del 01/01/2008 porque el campo IDServicioBase solo se actualizo a partir de esta fecha aprox.
		  	  )		  
			 )
	
	 )

		SELECT @Estado = 99, @Diagnostico = 'El Movimiento de Continuidad que se desea pasar  pudo haber sido Informado Anteriormente / Tiene problemas con el Mes Seleccionado / Falta registrar una Continuidad Anterior.-'


UPDATE tb_ColaDeMovimientos SET Estado = @Estado, EstadoCheck = @Estado, ChequeoEscuela = CASE WHEN @Modo = 2 THEN @Diagnostico ELSE ChequeoEscuela END 
WHERE idCola = @idCola
GO
GRANT EXECUTE ON  [dbo].[paChequearContinuidadesDeServicios] TO [GestionInstitucional]
GRANT EXECUTE ON  [dbo].[paChequearContinuidadesDeServicios] TO [PersonalDocente]
GRANT EXECUTE ON  [dbo].[paChequearContinuidadesDeServicios] TO [PersonalDocenteDireccion]
GO
